Définition

Le pseudocode est un langage pour exprimer clairement et formellement un algorithme. Ce langage est près d'un langage de programmation comme Pascal, C# ou C++, sans être identique à l'un ou à l'autre. Il exprime des idées formelles dans une langue près du langage naturel de ses usagers (pour nous, le français) en lui imposant une forme rigoureuse.

Quelques règles :

Corriger le pseudo code suivant ;
a et B sont des entiers
A ← 4 ; LIRE B
C'est une variable ← A+B;
ECRIRE c'est une variable

Les variables

A quoi servent les variables ?

Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par l’utilisateur (frappées au clavier), ou que sais-je encore. Il peut aussi s’agir de résultats obtenus par le programme, intermédiaires ou définitifs. Ces données peuvent être de plusieurs types (on en reparlera) : elles peuvent être des nombres, du texte, etc. Toujours est-il que dès que l’on a besoin de stocker une information au cours d’un programme, on utilise une variable.

Pour employer une image, une variable est une boîte, que le programme (l’ordinateur) va repérer par une étiquette. Pour avoir accès au contenu de la boîte, il suffit de la désigner par son étiquette.

En réalité, dans la mémoire vive de l’ordinateur, il n’y a bien sûr pas une vraie boîte, et pas davantage de vraie étiquette collée dessus (j’avais bien prévenu que la boîte et l’étiquette, c’était une image). Dans l’ordinateur, physiquement, il y a un emplacement de mémoire, repéré par une adresse binaire. Si on programmait dans un langage directement compréhensible par la machine, on devrait se fader de désigner nos données par de superbes 10011001 et autres 01001001 (enchanté !). Mauvaise nouvelle : de tels langages existent ! Ils portent le doux nom d’assembleur. Bonne nouvelle : ce ne sont pas les seuls langages disponibles.

Les langages informatiques plus évolués (ce sont ceux que presque tout le monde emploie) se chargent précisément, entre autres rôles, d’épargner au programmeur la gestion fastidieuse des emplacements mémoire et de leurs adresses. Et, comme vous commencez à le comprendre, il est beaucoup plus facile d’employer les étiquettes de son choix, que de devoir manier des adresses binaires.

Déclaration des variables et affectations

Il existe de nombreux types de variables utilisés :

types Remarques
booléen vrai ou faux
caractère symboles typographiques
chaine de caractères ensemble de caractères entre " "
entier entiers relatifs
flottant "Utilisé pour les réels"

Il existe d'autres types de variables. Le fait de déclarer en pseudo code le type de la variable n'est pas une obligation, mais vous le verrez dans de nombreux sites.

Le langage PYTHON est auto typé. Le typage se fait lors de l'affectation.

En pseudo-code, l'instruction d'affectation se note avec le signe ←

toto ← 40

On attribue la valeur 40 à la variable toto

Les instructions

Test IF THEN ELSE

Cette instruction teste une expression booléenne (condition) et exécute un bloc d'instruction(s) si la coondition est vraie

1 if condition then 2 bloc 1 3 else 4 bloc 2

La partie ELSE n'est pas obligatoire. On peut utiliser l'instruction IF ... THEN

Il existe de nombreuses variantes pour indiquer les blocs d'instructions:

Vous pouvez pratiquer du pseudo code en français ou utiliser l'anglais (il faut vous habituer à lire du pseucode en anglais).

Une version francisée avec une identification des blocs différentes pourraient être :

1 si condition alors 2 bloc 1 3 sinon 4 bloc 2

Boucle FOR

L'instruction POUR est utilisée lorsque le nombre d'itérations est connu à l'avance : elle initialise un compteur, l'incrémente après chaque exécution du bloc d'instructions, et vérifie que le compteur ne dépasse pas la borne supérieure.

1 for compteur←entier1 to entier2 2 bloc d'instructions

On peut préciser le pas d'incrémentation du compteur. Par défaut le pas est de 1. Le mot clé en anglais pour le pas est le mot STEP.

Boucle WHILE

L'instruction WHILE est utilisée lorsque le nombre d'itérations n'est connu à l'avance : elle exécute le bloc d'nstructions tant que la condition est vraie.

1 while condtion vraie 2 bloc d'instructions

L'importance des commentaires

Il faut prendre l'habitude de commenter ses algorithmes et ses programmes.

Quelques remarques :

Un exemple.

Voici l'algorithme sans les commentaires :

1 n←O 2 p←50 3 while p<100 4 p←p*1.1 5 n←n+1 6 Afficher la valeur de n

Il existe différentes façons de noter un commentaire : //, #, <- ->

Voici l'algorithme avec les commentaires :

// Cet algorithme cherche la valeur de n pour que p passe de 50 à 100 avec une augmentation de 10% 1 n←O //Initialisation de n 2 p←50 //Initialisation de p 3 while p<100 4 p←p*1.1 //p suivie de 10 % d'augmentation 5 n←n+1 //Incrémentation de n 6 Afficher la valeur de n

Avec trop de commentaires, le code devient illisible. Sans commentaire, le code est incompréhensible. A vous de trouver le juste milieu.

Commenter le code suivant :

1 S←0 2 for i←1 to 10 3 S←S+1 4 Afficher la valeur de S

Table d'éxécution d'un algorithme

Il existe différentes manières de réaliser une trace de programme et/ou d'algorithmes. Une trace :

Dans la mesure du possible, on peut organiser une trace d'exécution d'un algorithme en constituant un tableau avec toutes les variables de l'algorithme. Il faut numéroter toutes les lignes de votre algorithme. En colonne, il faut indiquer le nom des variables et en ligne les numéros de ligne.

Voici un exemple :

r←0 while r*r<= n r←r+1 r←r-1

Il faut numéroter toutes les lignes de l'algorithme.

1 r←0 2 while r*r<= n 3 r←r+1 4 r←r-1

Voici une trace de l'algorithme avec n=5. quelle est la valeur de la variable r ?

#ligne n r Commentaires
1 5 0 Initialisation
2 5 0 0*0<=5 , on entre dans la ligne 3
3 5 1 r←1
2 5 1 1*1<=5 , on entre dans la ligne 3
3 5 2 r←2
2 5 2 2*2<=5 , on entre dans la ligne 3
3 5 3 r←3
2 5 3 3*3>5 , on sort de la boucle
4 5 2 r←2

La variable r a pour valeur 2

En mathématiques, vous auriez une version minimaliste de ce tableau, qui correspondrait à l'état des variables :

n 5 5 5 5 5 5
r 0 0 1 2 3 2

Nous allons favoriser des traces de ce type :

Un exemple
En vous inspirant de l'exemple ci dessus, réaliser une trace de l'algorithme précédent avec $n=20$.

Un autre exemple avec un appel de fonction :

Un exemple

Exercices

Ecrire un algorithme en pseudo code qui calcule la moyenne de trois nombres $a$, $b$ et $c$. Le résultat sera stocké dans une variable $m$.
Ecrire un algorithme qui renvoie le max de deux nombres $a$ et $b$. Le résultat sera stocké dans une variable $max$.
Ecrire un algorithme qui stocke dans une variable $max$ le maximum de trois variables $a$, $b$ et $c$ données.
Ecrire un algorithme qui calcule la factorielle d'un nombre (factorielle se note avec un $!$). Par exemple $4 ! = 4 \times 3 \times 2 \times 1 = 24$
Comme nous l'avons vu dans l'avant propos il existe un type list en python ( en fait c'est plutôt un type tableau en informatique).

Pour définir un tableau/liste on écrira les élément entre crochets :

liste1 ←[3,5,2,14,8]

Le premier élément de la liste est le nombre 3 et le dernier élément est le nombre 8. Il y a 5 éléments dans cette liste.

Attention les case sont numérotées à partir de 0. L’indice du nombre 3 est le nombre 0. L’indice du nombre 8 est le nombre 4. Nous verrons plus tard pour quelle en est la raison.

On peut utiliser les notations suivantes :

Liste1[0]=3 ; liste1[1]=5 ; ………. ; liste1[4]=8

  1. Ecrire un algorithme en pseudo code qui renvoie le max des éléments d’une liste $l$.
  2. Ecrire une trace d'execution en prenant la list1 de l'exemple.

Ecrire un algorithme qui permet d’échanger le contenu de deux variables $a$ et $b$.

Ecrire un algorithme qui en entrée récupère 3 élements de types listes qui contiennent une chaine de caractère et qui renvoie un booleen True signifiant qu'ils sont rangés par ordre alphabétique.

Le mot "mot" serait stocké dans une liste l=['m';'o';'t']

Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15

Après avoir réalisé la trace de cet algorithme avec a=17 et b=3, précisez que représente a et i après exécution de algorithme

1 i←0 2 u←b 3 while a>=b 4 a←a-u 5 i←i+1

Prolongements

Il existe un mode de représentation des algorithmes sous forme d'organigrammes : Les algorigrammes

Vous pouvez vous rendre à l'adresse suivante : https://troumad.developpez.com/C/algorigrammes/

Il existe des logiciels permettant de réaliser des organigrammes (lucidchart, word, paint, etc)

Un exemple avec le site lucidchart

Un exemple

Vous pouvez réaliser un algorigramme d'un algorithme que vous avez traité dans le TD

Sitographie

Voici une liste de sites traitant de l'utilisation du pseudo code :

Savoir faire et Savoir